package cn.hbads.support.http.client.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.net.http.HttpClient;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * <b>Http响应接收解析模型</b>
 *
 * @author yvvb
 * @date 2025/5/4
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class HttpResponseModel<T> {
    // 状态码
    private int statusCode;

    // Http协议版本
    private HttpClient.Version version;

    // 响应头
    private Map<String, List<String>> responseHeaders;

    // 响应体，如果期望是响应对象请求，则T为响应对象，如果期望是html/string，则T是String，若期望文件下载，则T使用ByteArrayInputStream
    private Optional<T> responseBody;

    // 原始的String类型的响应体
    private String originResponseBodyStr;

    //当状态码不是200时，尝试将ResponseBody作为Json进行映射为Map
    private Optional<LinkedHashMap<String, String>> errorResponseMap;
}
